home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Environments / Small Eiffel 0.4.8 / lib_std / boolean.e < prev    next >
Text File  |  1997-04-13  |  2KB  |  104 lines

  1. -- Part of SmallEiffel -- Read DISCLAIMER file -- Copyright (C) 
  2. -- Dominique COLNET and Suzanne COLLIN -- colnet@loria.fr
  3. --
  4. expanded class BOOLEAN
  5. --
  6. -- Note : corresponding C type is "int"
  7. --
  8. inherit
  9.    BOOLEAN_REF
  10.       redefine
  11.      infix "and", infix "and then", infix "or",
  12.      infix "or else", infix "implies", infix "xor",
  13.      prefix "not", to_string, to_integer, out_in_tagged_out_memory,
  14.      fill_tagged_out_memory
  15.       end;
  16.  
  17. feature 
  18.  
  19.    infix "and" (other: BOOLEAN): BOOLEAN is
  20.      -- `and' of Current with `other'.
  21.      -- 
  22.      -- Note: when evaluation of `other' has no side effects, it 
  23.      -- may be better to use "and then" to avoid execution-time
  24.      -- overhead.
  25.       do
  26.      Result := Current and then other;
  27.       end;
  28.  
  29.    infix "and then" (other: BOOLEAN): BOOLEAN is
  30.      -- Semi-strict `and' of Current with `other'.
  31.       external "CSE"
  32.       end;
  33.  
  34.    infix "implies"(other: BOOLEAN): BOOLEAN is
  35.      -- Does Current imply `other'.
  36.       external "CSE"
  37.       end;
  38.  
  39.    infix "or" (other: BOOLEAN): BOOLEAN is
  40.      -- `or' of Current with `other'
  41.      --
  42.      -- Note: when evaluation of `other' has no side effects, it 
  43.      -- may be better to use "or else" to avoid execution-time
  44.      -- overhead.
  45.       do
  46.      Result := Current or else other;
  47.       end;
  48.  
  49.    infix "or else" (other: BOOLEAN): BOOLEAN is
  50.      -- Semi-strict `or' of Current with `other'
  51.       external "CSE"
  52.       end;
  53.  
  54.    infix "xor" (other: BOOLEAN): BOOLEAN is
  55.      -- `xor' of Current with `other'
  56.       do
  57.      if Current then
  58.         Result := not other;
  59.      else
  60.         Result := other;
  61.      end;
  62.       end;
  63.  
  64.    prefix "not": BOOLEAN is
  65.      -- `not' of Current.
  66.       do
  67.      if Current then
  68.      else
  69.         Result := true;
  70.      end;
  71.       end;
  72.  
  73.    to_string: STRING is
  74.       do
  75.          if Current then
  76.             Result := "true";
  77.          else
  78.             Result := "false";
  79.          end;
  80.       end;
  81.  
  82.    to_integer: INTEGER is
  83.       do
  84.      if Current then
  85.         Result := 1;
  86.      else
  87.         Result := 0;
  88.      end;
  89.       end;
  90.  
  91.    append_in(str: STRING) is
  92.       do
  93.      str.append(to_string);
  94.       end;
  95.  
  96. feature -- Object Printing :
  97.  
  98.    out_in_tagged_out_memory, fill_tagged_out_memory is
  99.       do
  100.      tagged_out_memory.append(to_string);
  101.       end;
  102.  
  103. end -- BOOLEAN
  104.